package com.sn.utils;

import com.sn.pojo.News;
import com.sn.pojo.NewsItem;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class NanShiUtils {
    //南师大学的新闻爬取工具类
    //工具类只负责爬取内容,不负责插入数据库，即不会生成id
    private String uri = "http://www.njnu.edu.cn/index/nsxw/"+page+".htm";//http://www.njnu.edu.cn/index/nsxw/138.htm
    private static int page=138;
    public List<News> getNews() {
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(uri);
        System.out.println("是否进行了翻页?南师"+page);
        System.out.println("看一下地址 南师"+uri);
        if(page>0)page--;
        List<News>newsList=new ArrayList<>();
        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //首先获取南师大学新闻的分类
        String category = doc.getElementsByClass("page-name").text();
        //经过分析 得知南师大学的首页新闻是包裹在h3标签(class=single-line)里面的a标签
        //第一步先获取h3标签集合
        Elements h3list = doc.getElementsByClass("single-line");
        //第二步，解析h3里面的a标签
        for (Element element : h3list) {
            //第三步,由于从这里面直接获取到的href链接不能直接由client访问,所以需要对链接做解析
            // "http://news.njnu.edu.cn/../info/1107/96470.htm"-->"http://news.njnu.edu.cn/info/1107/96470.htm"
            Elements a = element.getElementsByTag("a");
            String href = a.attr("href");//得到链接
            System.out.println("得到的href:"+href);
//            String realHref = getStr(href);
            News news=new News();
            String text = a.text();//得到标题
            System.out.println("标题:"+text+"  链接"+href);
            news.setNHref(href);//设置标题
            news.setNTitle(text);//设置标题
            news.setSId(3);//设置学校id
            news.setNGetTime(Tools.getFormatDate(new Date()));//设置爬取时间
            news.setNCategory(category);//设置标题
            newsList.add(news);
        }
        return newsList;
    }



    public NewsItem getItem(String iUri){
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(iUri);

        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //经过分析，南师大的新闻详情页的新闻内容包裹在 div标签下class=v_news_content里面的p标签中的text
        //第一步先获取div
        Elements v_news_content = doc.getElementsByClass("v_news_content");

        //第二步获取每个p标签的text,通过字符串拼接接起来
        List<String> list = v_news_content.eachText();
        StringBuffer sb=new StringBuffer();
        for (String s : list) {
            sb.append(s);
        }
        String values = sb.toString();
        //获取作者--> class="infos"下的 第一个li标签里面的所有a标签下的text
        Elements infos = doc.getElementsByClass("infos");
        //获取发布时间 --> class="infos"下的 第二个li标签里面的所有a标签下的text
        Element first = infos.first();//ul标签
        Elements lis = first.getElementsByTag("li");//得到li标签集合
        Element firstLi = lis.get(0);//第一个li标签
        Element secondLi = lis.get(1);//第二个li标签
        Elements a1 = firstLi.getElementsByTag("a");
        String author = a1.text();//获得作者
        Elements p = secondLi.getElementsByTag("p");
        String date = p.text();//获得发布时间
        NewsItem newsItem=new NewsItem();
        newsItem.setNAuthor(author);//设置作者
        newsItem.setNValue(values);//设置内容
        newsItem.setNCreateTime(date);//设置发布时间
        return newsItem;
    }

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    private String getStr(String href) {
        String[] split = href.split("/../");
        String url = split[0] + "/" + split[1];
        return url;
    }
}
